/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include "../工作区.h"



C_工作区页面*	f_工作区_创建3D视口(S_UI渲染环境& ctx);
void			f_3D视口工作区_销毁(C_工作区页面* 工作区);



bool on_2级3D视口创建菜单项(C_Widget* self, const std::u16string, uint16 id);

void f_工作区页面_3D视口界面初始化(S_UI渲染环境& ctx);
void f_工作区页面_3D视口界面销毁();



void f_工作区_选择物体(C_工作区页面* 工作区页面, bool 是否加选);



E_事件是否传递 f_工作区_移动物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_旋转物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_缩放物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_X方向变换物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_Y方向变换物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_Z方向变换物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_复制物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_删除物体(C_Widget* self, E_键位执行状态 状态);



E_事件是否传递 f_工作区_切换摄像机投影模式(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_镜头视点移动到激活物体中心(C_Widget* self, E_键位执行状态 状态);

E_事件是否传递 f_工作区_镜头视点移动到左(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_镜头视点移动到右(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_镜头视点移动到上(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_镜头视点移动到下(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_镜头视点移动到前(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_镜头视点移动到后(C_Widget* self, E_键位执行状态 状态);

E_事件是否传递 f_工作区_设置激活摄像机为视口摄像机(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_物体单选(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_物体加选(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_物体框选排除(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_物体框选(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_物体反选(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_开启多选操作(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_关闭多选操作(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_打开关键帧插入菜单(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_变换物体(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_打开创建菜单(C_Widget* self, E_键位执行状态 状态);

E_事件是否传递 f_工作区_方向小组件点击(C_Widget* self, E_键位执行状态 状态);
E_事件是否传递 f_工作区_方向小组件_旋转摄像机(C_Widget* self, E_键位执行状态 状态);

E_事件是否传递 f_view3d_物体添加到渲染层(C_Widget* self, E_键位执行状态 状态);


E_事件是否传递 f_工作区_物体数据编辑(C_Widget* self, E_键位执行状态 状态);





void f_3D视口工作区_置物体焦点();
void f_3D视口工作区_更新渲染物体();
void f_3D视口工作区_重置();
void f_3D视口工作区_销毁();

void f_3D视口工作区_更新所有视口组件绘制();
void f_3D视口工作区_更新所有视口属性绘制();
void f_3D视口工作区_更新所有视口属性面板();


void f_3D视口工作区页面_联动更新(E_工作区类型 来源工作区类型, E_工作区操作类型 操作类型);





void f_3D视口工作区_保存工作区状态(FILE* f, C_工作区页面* 页面);
void f_3D视口工作区_加载工作区状态(FILE* f, C_工作区页面* 页面);




